// import Fingerprint2 from "fingerprintjs2"
// import { getToken } from "./auth"


// 异常断开连接重连次数
// let reconnectionCount = 0
// 异常断开连接最大重连次数
// let maxReconnectionCount = 1000
// websocket 实例
let ws = null
// 链接状态
let socketOpen = false

// websocket用户id


// # webSocket地址
let baseHttp
function webSocketHttp() {
    // const baseHttp = import.meta.env.VITE_HTTP
    const str = baseHttp.replace("http", "ws")
    return `${str}/ws`
}
const websocket = {
    /**
     * 初始化websocket
     */
    init() {
        if (!window.WebSocket) {
            return alert("您的浏览器不支持WebSocket, 请更换浏览器!")
        }


        // 添加指纹
        // Fingerprint2.get(components => {
        //   // 参数只有回调函数时，默认浏览器指纹依据所有配置信息进行生成
        //   const values = components.map(component => component.value) // 配置的值的数组
        //   const fingerprint = Fingerprint2.x64hash128(values.join(""), 31) // 生成浏览器指纹
        //   if (uid.split(":").length === 1) uid = `${uid}:${fingerprint}?connectType=USER&Authorization=Bearer ${getToken()}`
        // })
        // 实例化websocket
        // ws = new WebSocket(`${webSocketHttp()}?connectType=USER&Authorization=Bearer ${getToken()}`)
        ws = new WebSocket(`${webSocketHttp()}?connectType=USER&Authorization=Bearer 22407223-f2d6-4c78-946a-d96fc448188b`)
        // 监听websocket连接
        ws.onopen = function () {
            console.log("连接成功")
            socketOpen = true
            // heartbeat_reset()
        }

        // 监听websocket消息
        ws.onmessage = function (event) {
            let data = JSON.parse(event.data)
            if (data.eventType) {
                switch (data.eventType) {
                    case "9999":
                        // 心跳检测
                        // heartbeat_reset()
                        break
                    default:
                        window.dispatchEvent(
                            new CustomEvent("onmessageWS", {
                                detail: {
                                    data: event.data
                                }
                            })
                        )
                        break
                }
            }
        }

        // 监听websocket错误信息
        ws.onerror = function (err) {
            console.log("websocket错误", err)
            // if (socketOpen === false) heartbeat_reset()
        }

        // 监听websocket关闭
        ws.onclose = function (err) {
            console.log("websocket关闭", err)
            socketOpen = false
        }
    },
    close() {
        if (socketOpen === true) {
            // clearTimeout(timer)
            // clearInterval(serverTimer)
            ws?.close()
        }
    },
    send(msg) {
        if (socketOpen === true) {
            ws.send(JSON.stringify(msg))
        }
    }
}

/**
 * 默认*秒发送一次心跳包，接收到消息或者服务端的响应又会重置来重新计时。
 */
// let timeout = 1 * 30 * 1000
// let serverTimout = 1 * 20 * 1000
// // let timer: NodeJS.Timeout
// let serverTimer: NodeJS.Timeout
// // 心跳检测-重置
// function heartbeat_reset() {
//     clearTimeout(timer)
//     clearInterval(serverTimer)
//     heartbeat_start()
//     console.log("心跳检测")
// }
// // 心跳检测-开始
// function heartbeat_start() {
//     timer = setTimeout(() => {
//         heartbeat_send(timeout)
//         serverTimer = setInterval(() => {
//             reconnection()
//         }, serverTimout)
//     }, timeout)
// }
/**
 * 发送心跳包
 */
// function heartbeat_send(timeout) {
//     if (ws.readyState == WebSocket.OPEN) {
//         let msg = `{"eventType":"9999","uid":"${uid}","timeout":${timeout}}`
//         ws.send(msg)
//     }
// }
/**
 * 重连
 */
// function reconnection() {
//     if (reconnectionCount > maxReconnectionCount) {
//         console.log("超过最大重连次数，断开连接")
//         ws.close()
//     } else {
//         // 尝试重连
//         reconnectionCount++
//         console.log("第" + reconnectionCount + "次尝试重连")
//         websocket.init(uid)
//     }
// }



export default websocket
